<?php

namespace App\Utils\ResponseResult;

use Illuminate\Http\JsonResponse;

class JsonResult
{
    /**
     * 状态码：200的返回结果
     *
     * @param $data mixed 数据
     * @param $message string 消息
     * @return JsonResponse
     */
    static function success(mixed $data, string $message = "成功"): JsonResponse
    {
        return self::custom($data, $message, 200);
    }

    /**
     * 状态码：201的返回结果
     *
     * @param $data mixed 数据
     * @param $message string 消息
     * @return JsonResponse
     */
    static function created(mixed $data, string $message = "新建成功"): JsonResponse
    {
        return self::custom($data, $message, 201);
    }

    /**
     * 状态码：401的返回结果
     *
     * @param $data mixed 数据
     * @param $message string 消息
     * @return JsonResponse
     */
    static function unauthorized(mixed $data, string $message="未授权"): JsonResponse
    {
        return self::custom($data, $message, 401);
    }
    /**
     * 状态码：403的返回结果
     *
     * @param $data mixed 数据
     * @param $message string 消息
     * @return JsonResponse
     */
    static function forBidden(mixed $data, string $message="禁止"): JsonResponse
    {
        return self::custom($data, $message, 403);
    }
    /**
     * 状态码：404的返回结果
     *
     * @param $data mixed 数据
     * @param $message string 消息
     * @return JsonResponse
     */
    static function notFound(mixed $data, string $message="未发现"): JsonResponse
    {
        return self::custom($data, $message, 404);
    }
    /**
     * 状态码：500的返回结果
     *
     * @param $data mixed 数据
     * @param $message string 消息
     * @return JsonResponse
     */
    static function error(mixed $data, string $message="服务器错误"): JsonResponse
    {
        return self::custom($data, $message, 500);
    }
    /**
     * 状态码：自定义的返回结果
     *
     * @param $data mixed 数据
     * @param $message string 消息
     * @param $code int 状态码
     * @return JsonResponse
     */
    static function Custom(mixed $data, string $message, int $code): JsonResponse
    {
        return response()->json([
            "data" => $data,
            "message" => $message
        ], $code);
    }


}
